【教程…?】解决ass字幕/弹幕文件中的emoji/颜文字乱码问题&一些电脑小白的折腾经历 您所在的位置:网站首页 camping time 颜文字 【教程…?】解决ass字幕/弹幕文件中的emoji/颜文字乱码问题&一些电脑小白的折腾经历

【教程…?】解决ass字幕/弹幕文件中的emoji/颜文字乱码问题&一些电脑小白的折腾经历

2023-10-06 19:10| 来源: 网络整理| 查看: 265

(本人完全没有学过编程,第一次写代码肯定有不合理的地方,都是用的最基础的函数,如果有大神看到了欢迎在评论里指导😭)

1.主要内容

1.1 使用目的

①删除ass文件中导致乱码的emoji

②删除youtube的表情码

 (保留了这七个"☝","♥","✌","❤","♀","♂","❣"符号显示为黑白的特殊符号)

③给导致乱码的颜文字中的特殊符号强制指定字体让其不乱码。

1.2 起因

作为一个弹幕爱好者,最近沉迷将弹幕文件转换为ass字幕文件然后压制成自带弹幕的视频。

同时作为一个烤肉人,制作字幕也一定会用到ass字幕文件,最后压制带字幕的视频。

然而最近这两件事情都遇上了一个共同的问题,那就是乱码。

乱码的起因有两个,一个是emoji(絵文字),一个是颜文字中的特殊符号。(YouTube Livechat转换的弹幕的话虽然没有emoji,但是有":xx:"形式的表情码)

注:以下下所有图片均为使用ffmpeg压制的效果

注:YouTube的直播评论转弹幕文件请看@宇治天皇 这位大神的文章【教程】如何将YouTube的Live Chat转换并压制成弹幕

YouTube上的表情码和特殊符号的乱码么的眼睛即使Arctime预览中显示正常,实际压制出来也可能乱码

1.3 使用效果

转换前:

使用字体:冬青简体中文

转换后:

仍存在的问题:修饰性符号会显示错位 眼眶跑眼珠子外面去了眉毛在眼睛下面orz

1.4 使用方法

个人电脑环境:macOS Catalina 10.15.7  Python版本:Python 3.9.6

①安装python3

②安装emoji库(windows下直接pip就行)

注:如果仅用于处理youtube弹幕可以不用安装emoji库,删掉使用emoji库的第3行和第56行就好。

③下载我指定的字体(所有使用的字体我已经打包了见评,下载自己电脑中没有的字体就好)  P.S.想换别的字体直接修改代码中的dict2就好

④下载“test3.py"。(见评

 然后会在原路径下输出一个“文件名output.ass”的文件

1.5 仍存在的问题

①因为是强制性给所有特殊符号分别指定一个字体,所以一些修饰性符号e.g.( • ̀ω•́  ) 显示会错位。

②颜文字使用的特殊符号实在太多太多了,我是根据这篇文章(https://tanukifont.com/where-do-you-come-from/)里总结的特殊符号写的,然而实际使用中应该还是能发现不包括在内的符号,希望在将来的使用中慢慢完善吧!(毕竟被收录的字符越来越多,而颜文字也源源不断地被发明出来orz)

③http://unicode.org/emoji/charts/emoji-variants.html

 ↑这个表中存在的既可以emoji也可以黑白的符号,在用emoji库解码时无论是黑白符号还是emoji都会被解为同一个所以都会被删除。于是根据我个人的喜好,通过强行替换的方式,仅保留了"☝","♥","✌","❤","♀","♂","❣" 这7个。(我觉得有的符号黑白的不好看hhh)

④由于本人是真・小白(b站上的python 600集教程看到30集就看不下去了orz)肯定还存在各种各样其他的问题…

2.其他一些解决方法(?)

①用Arctime导出为Final Cut原声字幕序列(保留emoji&颜文字显示优秀)

注:这个方法仅针对普通的字幕ass文件,弹幕ass文件无法使用。因为一转换弹幕的那些移动参数就全没了。

效果:

眼珠在眼眶里!眉毛也好好地在眼睛上面

自己烤肉做字幕想用emoji的话可以考虑这个方法。不过个人电脑比较烂,final cut然后再compressor导出一次能要老半天,并且文件好大orz

②眼不见心不烦法?

选择一个兼容性较强,并且乱码时一般显示为空的字体吧!

3. 关于libass的字体fallback

折腾的时候发现libass是可以“召唤”电脑中的字体以达到一定程度上不乱码的作用的。然而有的字体即使电脑上有也是“召唤”不出来的,并且和原本指定的字体也有关。去libass的github上逛了逛,发现与电脑环境、电脑的语言偏好设置也有关(我理解为接近玄学hhh)

在个人的电脑上对上面那篇颜文字的特殊字符的文章中总结的所有特殊符号进行了测试,截取部分结果如下:

黄色格子和红色字为显示失败的

即使是“召唤”成功的那些,有时在颜文字中显示效果并不好,例如:(⦿_⦿)(B站也是将它显示为小眼睛的感觉hhh)

还有同一个字符在同等条件的两次实验中召唤出了不同的字体。更加让我相信这是玄学了(不是

第二列是用Arctime压的,同种字体和在ffmpeg下的效果不一样。

4. 碎碎念(电脑小白的折腾之路)

最近沉迷催麦,想把一切都保存下来(怀疑自己有收集癖),于是发现了下载youtube直播评论的chat_downloader,然后又在b站发现了把直播评论转为弹幕的方法。但是看着这些乱码实在是不得劲。

emoji在网上搜了一圈,自己也实验了,目前ass(准确的来说是libass)貌似目前还是不支持的,只能找办法删掉。

youtube livechat中的emoji表情是以":xxx:"的形式显示的,同理也是可以删掉的。

于是一开始没发现颜文字乱码问题的我,不知道是梁静茹还是大学里学的一点皮毛的JavaScript(现已全还给老师)带给我的勇气,作为一个电脑小白居然决定写个python解决这个问题…

于是乎开始在b站看python教程,结果600多集的教程看到30集就看不下去了orz 于是决定直接莽。(P.S. 还有其他推荐的教程吗?当然这个教程我也会尽量努力看下去的orz)

一开始进行得还算顺利,因为感谢有emoji这个库(https://pypi.org/project/emoji/)可以将所有的emoji转换成":xx:"的形式,一个正则就可以非常容易地删除了。

然而接下来我发现有一部分的emoji存在emoji版本和黑白的特殊符号版本(http://unicode.org/emoji/charts/emoji-variants.html)

然而emoji库在解码的时候是无论是黑白的还是彩色的都会转为同一个码,所以也会被删除。

我最后决定只保留这几个"☝","♥","✌","❤","♀","♂","❣" (只想到一个个再解回去这个办法orz 不想面对emoji庞大的unicode…)其余的个人觉得黑白的不好看就算了。不过这个方法无论原本是特殊符号还是emoji还是youtube的表情码都会被保留。

接下来我终于发现了颜文字乱码的问题…这下麻烦大了。也没找到合适的库,并且字符种类好多啊😭字体也好麻烦,即使是可以正常显示的字体,但作为颜文字可能效果不好…总之进行了一连串的实验的重复工作后,总算出来一个还算可以的效果。(虽然还存在各种各样的问题,P.S.关于修饰性符号有哪位大神有建议吗?)

不知道还有没有像我一样搞麦搞到开始学习编程的朋友😂虽然可能太过简单都算不上是编程哈哈哈,不过自己制作一个自己实际能用上的东西确实还挺让人开心的~也希望自己能坚持把教程看下去…至少要看到开始讲python吧!前100集还在讲linux系统呢😂

(不知不觉搞企划搞其他什么的给自己搞出了不少技能,哪天再总结一些ffmpeg的东西吧。虽然都是网上的内容,但是想总结一下算是比较少见的?东西)

(刚突然想起无论是emoji还是颜文字都是日本人发明的诶…😂)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有